It is a common knowledge that it is possible to have access to more and more services on the Internet network. So the Internet users are interested in obtaining information about on-line services on the Internet and how to request these services. The on-line services are generally provided by application service providers, but there are also services which are domain-oriented like the request on life sciences.
Today, it is possible for a client to obtain a requested information by using the “Web Services” which is a specific business functionality exposed by a company, usually through an Internet connection, for the purpose of providing a way for a client, a company or a program to use the service. Web services are becoming a backbone for the electronic commerce and the exchange with the application service providers.
A service provider providing public web services on the Internet network has to describe the whole informations regarding the web service. To do that, he can provide a Web Service Definition Language (WSDL) file associated with the web service. A WSDL is useful to describe the interface (methods, parameters, . . . ) and the runtime (bindings, addresses, . . . ) of the service. From the client point of view, a WSDL file contains all the information required to build the client structure. Normally, a client would use the WSDL file only at the build time and not at the run time.
In a normal production model, it is sure that a WSDL will evolve because of new functional or runtime requirements. The main difficulty when a service provider wants to update a web service and the associated WSDL file is the notification of all the web service clients. In fact, in case of a public web service, the service provider does not know the web service clients, and therefore, he cannot notify them of a change.
Some practices regarding changes in the interface of a web service are provided. Thus, a change in the interface should be always compatible with previous versions. For instance, new methods are allowed in a WSDL file, but the removal of these methods is forbidden.
However, there is no way for a service provider to notify all web service clients when the end point address of one of its public web service changes. The reasons are that he does not use a reverse proxy or a web service gateway and wants to move the web service from a first host to another more powerful host, or he wants to add a load-balancing solution in front of the web service, or he wants to add a web service gateway, a secure proxy in front of it, or he has to change the domain name.
An existing solution already exists for the HTTP protocol as transport protocol using 3xx HTTP status codes. A client browser receiving a 3xx HTTP response code knows that the location of the required document has changed and the browser automatically generates a new HTTP request to the location indicated in the 3xx HTTP response code. But this solution cannot be applied for web services using Single Object Access Protocol (SOAP) as message exchange protocol for two reasons. Firstly, the codes 3xx are not automatically handled by runtimes that provide the binding between SOAP and HTTP. Secondly, the communication protocol for the SOAP messages is not only HTTP since the SOAP messages can also be sent on other transport protocols like SMTP, JMS, . . . and the 3xx HTTP status codes for redirection are not available on these protocols.